package com.java.yz.day12.ketang;

import java.util.Map;
import java.util.TreeMap;

/*
    "aababcabcdabcde",获取字符串中每一个字母出现的次数要求结果:a(5)b(4)c(3)d(2)e(1)
 */
public class TreeMapText1 {
    public static void main(String[] args) {
        //创建字符串
        String s = "aababcabcdabcde";
        //将字符串转换成数组进行遍历
        char[] characters = s.toCharArray();
        //创建集合来存放 key --字母  value--次数
        TreeMap<Character, Integer> Map = new TreeMap<>();
        for (char character : characters) {
            //System.out.println(character);
            //判断该字符是否在该集合中，不在就作为key，value=1
            //该字符如果存在，就把value+1重新赋值进去
            if(!Map.containsKey(character)){
                Map.put(character,1);
            }
            else{
                Map.put(character,Map.get(character)+1);
            }

        }
        //遍历这个集合
        for (java.util.Map.Entry<Character, Integer> entry : Map.entrySet()) {
            Character key = entry.getKey();
            Integer value = entry.getValue();
            System.out.print(key+"("+value+")");
            //这样就可以完美的得到这个结果a(5)b(4)c(3)d(2)e(1)
        }
    }
}

//面试题
//HashMap和Hashtable的区别
/*
    HashMap:
        他是线程不安全的，但是效率高
        可以允许key和value都为null
    Hashtable:
        线程安全的，效率不高
        不允许key和value为null，会报空指针异常


 */

